﻿using System;
using System.Windows.Media;
using System.Windows.Threading;
using BrasilFramework.Controle.Silverlight.Comum;

namespace BrasilFramework.Controle.Silverlight
{
    public partial class BarraProgresso
    {
        private static readonly JanelaModal janelaModal = new JanelaModal();

        public BarraProgresso()
        {
            InitializeComponent();
        }

        public static bool Aberta { get; private set; }

        private readonly static DispatcherTimer tempoMostrar = CriarTempo(true, 100);
        private readonly static DispatcherTimer tempoOcultar = CriarTempo(false, 500);

        private static DispatcherTimer CriarTempo(bool mostrar, int milisegundo)
        {
            DispatcherTimer tempo = new DispatcherTimer { Interval = new TimeSpan(0, 0, 0, 0, milisegundo) };
            if (mostrar)
                tempo.Tick += Mostrar;
            else
                tempo.Tick += Ocultar;

            return tempo;
        }

        public static void Mostrar()
        {
            if(Aberta)
            {
                tempoOcultar.Stop();
                return;
            }
            tempoMostrar.Start();
        }

        private static void Mostrar(object sender, EventArgs e)
        {
            tempoMostrar.Stop();
            Aberta = true;
            BarraProgresso barra = new BarraProgresso { BorderBrush = new SolidColorBrush(Colors.Black) };
            Util.AtualizarTamanhoControle(barra);
            janelaModal.Abrir(barra);
        }

        public static void Ocultar()
        {
            tempoOcultar.Start();
        }

        private static void Ocultar(object sender, EventArgs e)
        {
            tempoOcultar.Stop();
            Aberta = false;
            janelaModal.Fechar();
        }
    }
}